Comprobar cambios, log, show, diff

Descripcion

Como ver que cambios se han hecho en un archivo o como seguir la pista de un cambio concreto utilizando los comandos de git log, show, diff.

Git log

Con el comando git log podemos ver todo el registro de commits que se han hecho en el repositorio, por defecto el comando nos muestra solo quien ha hecho el commit, cuando lo ha hecho, el comentario del commit y poco mas, para obtener mas información podemos usar los siguientes comandos:

Comprobar rama de commit

Un comando alternativo para saber a que rama pertenece un commit es el siguiente:

git name-rev <COMMIT_HASH>
Git show

Podemos usar el comando git show para comprobar un commit concreto y ver todos los cambios que se han hecho en dicho commit

git show <COMMIT_HASH>

Si intentamos hacer el show del commit de un merge en algunas ocasiones no veremos ningun archivo, en estos casos (o siempre que hagamos show de un merge), tendremos que usar la opcion -m:

git show -m <COMMIT_HASH>

Si solo queremos ver los archivos cambiados y no el contenido podemos usar:

git show -m --name-status <COMMIT_HASH>
Git diff

Podemos usar el comando git diff para comparar dos commits concretos

Tracear archivo a traves de merges

Normalmente para ver en que commits se ha modificado un archivo podemos hacer git log -p -- <archivo> pero si queremos ver los merges en los que ha estado involucrado y no solo los cambios podemos usar las opciones -m y --follow tal que asi:

git log -m --follow --name-status -- <archivo>

NOTA: La opción --follow nos permite seguir el histórico del archivo aunque haya cambiado de nombre, al combinarlo con la opción -m (que permite mostrar los cambios en los commits de merges) nos permite ver el pasó del archivo a traves de los merges en los que haya estádo el archivo

Una version mas completa que nos muestra las ramas de cada commit y el gráfico de las ramas es la siguiente:

git log --graph --source --all --name-status -m --follow -- <archivo>

full-history

Al usar las opciones -m --follow se puede omitir ciertos merges, si queremos mostrar toda la historia por la que pasa el archivo podemos hacerlo podemos hacerlo con --full-history tal que asi:

git log --name-status -m --full-history -- <archivo>

NOTA: La opcion --full-history tenemos que utilizarla SIN la opción --graph ni --follow si no se volverán a omitir ciertos merges

first-parent

Con la opcion --first-parent nos permite ver en que commit concreto se introdujo el archivo en la rama en la que estamos.

Al usar esta opción solo se muestran los commits relacionados directamente con la rama actual (solo un nivel de profundidad):

git log --first-parent --name-status -- <archivo>
Tags

Git | log | show | diff